(function () {
    // 以abstract开头的类：抽象类 不能用来创建实例对象
    // - 专门用来被继承的类
    abstract class Animal {
        name: string
        constructor(name: string) {
            this.name = name;
        }
        abstract sayHello(): void;
    }
    class Dog extends Animal {
        sayHello() {
            // 在类的方法中 super就表示当前类的父类
            //super.sayHello();
            console.log("汪汪汪！");
        }
    }
    class Cat extends Animal {
        sayHello() {
            console.log("喵喵喵~");
        }
    }

    const dog = new Dog("旺财");
    const cat = new Cat("咪咪");

    dog.sayHello();
    cat.sayHello();
})();